home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1990-12-13 | 11.5 KB | 501 lines |
- Set Buffer 10
- ' ********* Startup *******
- Randomize Timer
- Key Speed 5,5
- K=22
- Led Off
- Dim PF(15,22),X(K,3),Y(K,3),CO(K),N(K)
- Global N$,FT,CL,CO()
- For T=0 To 15 : PF(T,22)=1 : Next
- For T=0 To 22 : PF(0,T)=1 : PF(15,T)=1 : Next
- For G=2 To K : Read CO(G)
- For T=1 To 3 : Read X(G,T),Y(G,T) : Next :
- Read N(G)
- Next
- CO(0)=9
- Screen Open 0,320,256,32,0
- Flash Off
- Curs Off
- Hide On
- Do
- Load "CazTri:mentre",3
- Load Iff "CazTri:pictochange"
- Music 1
- Clear Key
- KW
- Load Iff "CazTri:screentochange"
- Clear Key
- Key Speed 10,10 : Paper 0 : Pen 2
- Locate 12,22 : CINPUT["'abcdefghijklmnopqrstuvwxyz",5]
- Key Speed 5,3
- ' ****************** Livello 1 **********************
- Erase 3
- PUNTI=0 : CULO=0 : GU=1
- Restore 101
- Repeat
- Read L,MAZ,LINE,PAZ$
- If PAZ$=N$
- GU=L
- End If
- Until PAZ$="."
- Load "base1M",3
- Music 1
- Repeat
- Mvolume 63
- Restore GU+100
- Gosub NANO
- Read L,MAZ,LINE,PAZ$
- If MAZ=0
- Gosub FINE : CULO=2
- Else
- Load Iff "CazTri:picture"
- Ink 7 : Bar 25,50 To 134,70 : Ink 29 : Box 25,50 To 134,70
- Locate 4,7 : Pen 1 : Paper 7 : Print "STAI PRONTO!" : Wait 150
- If L=2
- For T=10 To 21 : For G=1 To 2 : PF(G,T)=Rnd(6)+2 : PF(15-G,T)=Rnd(6)+2 : Next : Next
- End If
- Gosub L*1
- Gosub RESTO
- Paper 10 : Pen 1 : Locate 12,24 : Print L : Paper 12 : Locate 11,26 : Print LINE;" "
- Gosub MAIN
- End If
- Until CULO>0
- FINAL:
- If CULO=1
- Ink 7 : Bar 25,50 To 134,70 : Ink 29 : Box 25,50 To 134,70
- Locate 4,7 : Pen 1 : Paper 7 : Mvolume 10
- Volume %1111,63
- Print "VAFFANCULO!!" : Sam Play 8,1,12000 : Wait 250
- End If
- Erase 3
- Load "Dream",3
- Mvolume 63
- Music 1
- Paper 0 : Cls
- Load Iff "totalefinepic"
- Clear Key
- Locate 16,18 : Paper 0 : Pen 5 : Print L
- Locate 13,20 : Pen 6 : Print PUNTI
- KW
- Erase 3
- Clear Key
- Loop
- End
- ' ***************** MAIN PROGRAM !!!!!!! *********************
- MAIN:
- Randomize Timer
- DL=Rnd(6)+2 : Ink 9
- Repeat
- DF:
- CL=DL
- DL=Rnd(6)+2
- If CL=9 Then Goto DF
- X=9 : Y=1 : CONTO=0 : A=0 : Ink 9
- Bar 180,120 To 219,154
- LL=CL : CL=DL : FOTTO[24,17] : For T=1 To 3 : FOTTO[24+X(DL,T),17+Y(DL,T)] : Next : Swap LL,CL
- Paper 2 : Pen 1 : Locate 32,24 : Print PUNTI
- If L=8 and LINE=1 Then MAZ=2
- Clear Key
- Repeat
- A$=Inkey$
- If A$="a" Then Music Off
- If A$="m" Then Music 1
- If(A$=" ") or(A$=".") or((Joy(1) and 2)=2) Then CONTO=CONTO+MAZ/2
- If((A$=Chr$(29)) or(A$="z") or(A$="q") or((Joy(1) and 4)=4)) and(PF(X-3,Y)=0) and(PF(X-3+X(CL,1),Y+Y(CL,1))=0) and(PF(X-3+X(CL,2),Y+Y(CL,2))=0) and(PF(X-3+X(CL,3),Y+Y(CL,3))=0)
- Paper 9 : Locate X,Y : Print " "
- Gosub D
- Dec X
- Gosub S
- Wait 2
- End If
- If((A$=Chr$(28)) or(A$="x") or(A$="w") or((Joy(1) and 8)=8)) and(PF(X-1,Y)=0) and(PF(X-1+X(CL,1),Y+Y(CL,1))=0) and(PF(X-1+X(CL,2),Y+Y(CL,2))=0) and(PF(X-1+X(CL,3),Y+Y(CL,3))=0)
- Gosub D
- Inc X
- Gosub S
- Wait 2
- End If
- If(A$=Chr$(30)) or(A$=Chr$(31)) or(A$=Chr$(13) or((Joy(1) and 16)=16))
- Gosub O
- If H=0
- Gosub D : CL=N(CL)
- End If
- If H<>0
- '---------------- pezzi gialli e rossi-----------
- If N(CL)=5 or N(CL)=2 or N(CL)=21 or N(CL)=22 or N(CL)=6
- X1=X : Inc X
- Gosub O
- If H=0
- Dec X
- Gosub D : Inc X : CL=N(CL)
- Else X=X1
- End If
- End If
- If N(CL)=16 or N(CL)=10 or N(CL)=19
- X1=X : Dec X
- Gosub O
- If H=0
- Inc X
- Gosub D : Dec X : CL=N(CL)
- Else X=X1
- End If
- End If
- '----------------------pezzo azzurro
- '-----------------------pezzo blu 1
- If N(CL)=13
- X1=X : Inc X
- Gosub O
- If H=0
- Dec X
- Gosub D : Inc X : CL=N(CL)
- Else
- Inc X
- Gosub O
- If H=0
- Dec X : Dec X : Gosub D : Inc X : Inc X
- CL=N(CL)
- Else X=X1-1
- Gosub O
- If H=0
- Inc X : Gosub D : Dec X : CL=N(CL)
- Else X=X1
- End If
- End If
- End If
- End If
- '----------------------pezzo blu 2
- If N(CL)=4
- X1=X : Dec X
- Gosub O
- If H=0
- Inc X
- Gosub D : Dec X : CL=N(CL)
- Else
- Dec X
- Gosub O
- If H=0
- Inc X : Inc X : Gosub D : Dec X : Dec X
- CL=N(CL)
- Else X=X1+1
- Gosub O
- If H=0
- Dec X : Gosub D : Inc X : CL=N(CL)
- Else X=X1
- End If
- End If
- End If
- End If
- End If
- Gosub S
- Wait 4
- End If
- C=PF(X-2,Y+1)
- If C=0 Then C=PF(X-2+X(CL,1),Y+1+Y(CL,1))
- If C=0 Then C=PF(X-2+X(CL,2),Y+1+Y(CL,2))
- If C=0 Then C=PF(X-2+X(CL,3),Y+1+Y(CL,3))
- Inc CONTO
- If CONTO>MAZ
- CONTO=0
- Gosub D
- Inc Y
- If L=21 and X>5 and Rnd(5)=1
- Dec X
- Gosub O
- If H<>0
- Inc X
- End If
- End If
- If L=22 and X<14 and Rnd(5)=1
- Inc X
- Gosub O
- If H<>0
- Dec X
- End If
- End If
- Gosub S
- End If
- Until C<>0
- If Y=1 Then CULO=1 : Return
- PF(X-2,Y)=CL
- Gosub S
- For T=1 To 3
- PF(X-2+X(CL,T),Y+Y(CL,T))=CO(CL)
- Next
- If V>Y Then V=Y
- Add PUNTI,CO(CL)-1
- For T=21 To 2 Step -1 : H=0
- For G=1 To 14
- If PF(G,T)<2 Then H=1
- Next
- If H=0 Then Gosub RIGA
- Next
- '
- '
- '
- '
- Until LINE<=0
- '********************** fine quadro *********************
- Mvolume 20
- Sam Play 8,3,13000
- For T=0 To 21
- For G=1 To 14
- FT=1 : FOTTO[G+2,T]
- Next
- Next
- Clear Key
- Paper 0
- Wait 100
- Cls
- Inc GU : Restore GU+100
- If L<>26
- Load Iff "finepic"
- Paper 0
- Pen 31
- Locate 30,11 : Print L
- Pen 2
- Locate 12,22 : Read L,MAZ,LINE,MAZ$ : Print MAZ$
- KW
- Else Read L
- End If
- Restore GU+100
- Return
- End
- '-----------------------------------------------------------------
- '********************** FINE ***************************
- RIGA:
- Sam Play 8,2,16000
- For G=1 To 3
- Paper 31 : CL=7
- For S=1 To 14 : FOTTO[S+2,T] : Next
- Paper 1 : CL=1
- For S=1 To 14 : FOTTO[S+2,T] : Next
- Next
- PUNTI=PUNTI+30
- For S=T To V-2 Step -1
- If S>0
- For G=1 To 14
- PF(G,S)=PF(G,S-1)
- CL=PF(G,S)
- FOTTO[G+2,S]
- Next
- End If
- Next
- Inc T
- Inc V
- Dec LINE
- If L>8 and L<17 and MAZ>1 Then Dec MAZ
- If L>17 and L<21 and LINE<12 Then Dec MAZ
- If L=26 Then Dec MAZ
- If LINE>=0 Then Paper 12 : Pen 1 : Locate 11,26 : Print LINE;" "
- Return
- RESTO:
- Ink 9
- Bar 24,0 To 135,176
- For S=1 To 21
- For G=1 To 14
- If PF(G,S)=0 Then CL=0 Else CL=PF(G,S)
- FOTTO[G+2,S]
- Next
- Next
- Return
- NANO:
- For S=1 To 21
- For G=1 To 14
- PF(G,S)=0
- Next
- Next
- Return
- '
- '
- O:
- H=0
- For T=1 To 3
- If X-2+X(N(CL),T)>=0 and X-2+X(N(CL),T)<16
- If PF(X-2+X(N(CL),T),Y)>0
- H=1
- End If
- Else H=1
- End If
- Next
- Return
- '
- '
- S:
- FOTTO[X,Y]
- For T=1 To 3 : X1=X+X(CL,T) : Y1=Y+Y(CL,T)
- If Y+Y(CL,T)>=0 Then FOTTO[X1,Y1]
- Next
- Return
- D:
- Paper 9 : Locate X,Y : Print " "
- For T=1 To 3
- If Y+Y(CL,T)>=0 Then Locate X+X(CL,T),Y+Y(CL,T) : Print " "
- Next
- Return
- Data 2,-1,0,1,0,1,-1,11
- Data 3,0,-1,1,-1,1,0,3
- Data 4,-1,0,1,0,2,0,12
- Data 5,-1,-1,-1,0,1,0,15
- Data 6,-1,0,0,-1,1,0,18
- Data 7,1,-1,1,0,0,1,21
- Data 8,0,-1,1,0,1,1,22
- Data 2,0,-1,0,1,1,1,2
- Data 2,1,0,-1,0,-1,1,9
- Data 2,-1,-1,0,-1,0,1,10
- Data 4,0,-1,0,1,0,2,13
- Data 4,-2,0,-1,0,1,0,14
- Data 4,0,-2,0,-1,0,1,4
- Data 5,0,-1,0,1,-1,1,16
- Data 5,-1,0,1,0,1,1,17
- Data 5,0,1,0,-1,1,-1,5
- Data 6,0,-1,0,1,-1,0,19
- Data 6,0,1,-1,0,1,0,20
- Data 6,0,-1,0,1,1,0,6
- Data 7,-1,0,0,1,1,1,7
- Data 8,1,0,0,1,-1,1,8
- 1 V=21
- 2 V=10 : Return
- 3 PF(1,16)=5 : PF(14,16)=5 : PF(3,17)=4 : PF(12,17)=4 : PF(5,18)=3 : PF(10,18)=3
- PF(2,19)=7 : PF(13,19)=7 : V=15
- Return
- 4 V=21 : Return
- 5 For T=12 To 21 : PF(7,T)=4 : PF(8,T)=4 : Next : V=10
- Return
- 6 For T=1 To 14 : PF(T,14)=1 : Next : V=10
- Return
- 7 For T=17 To 21
- For G=1 To 14 : A=Rnd(50)
- If A<2 or A>9 Then A=0
- PF(G,T)=A
- Next
- Next
- V=16
- Return
- 8 For T=7 To 21
- For G=1 To 14 : A=Rnd(6)+2
- PF(G,T)=A
- Next
- Next
- V=6
- Return
- 9 V=21 : Return
- 10 For T=0 To 7
- For G=0 To T
- PF(G+1,T+14)=3
- Next : Next
- V=13
- Return
- 11 For T=0 To 7
- For G=0 To T
- PF(G+1,T+14)=2
- PF(14-G,T+14)=2
- Next : Next
- V=14
- Return
- 12 For T=17 To 21
- PF(1,T)=1 : PF(14,T)=1
- Next
- V=16
- Return
- 13 For T=10 To 21 : PF(7,T)=4 : PF(8,T)=4 : Next
- V=9
- Return
- 14 For T=17 To 21
- For G=1 To 14 : A=Rnd(40)
- If A<2 or A>9 Then A=0
- PF(G,T)=A
- Next
- Next
- V=16
- Return
- 15 For T=1 To 14 : PF(T,19)=1 : Next
- For T=1 To 14 : PF(T,18)=1 : Next
- For T=1 To 14 : PF(T,17)=1 : Next
- For T=1 To 3 : PF(T+2,21)=1 : PF(13-T,21)=1 : Next
- For T=1 To 5 : PF(T+1,20)=1 : PF(14-T,20)=1 : Next
- For T=1 To 3 : PF(T+2,15)=1 : PF(13-T,15)=1 : Next
- For T=1 To 5 : PF(T+1,16)=1 : PF(14-T,16)=1 : Next
- For T=12 To 20 : PF(7,T)=5 : PF(8,T)=5 : Next
- PF(7,10)=2 : PF(8,10)=2 : PF(8,11)=2 : PF(7,11)=2
- V=14
- Return
- 16 For T=1 To 14 : PF(T,12)=1 : Next : V=10
- Return
- 17 PF(1,1)=2 : PF(2,1)=3 : PF(3,1)=4 : PF(4,1)=5 : PF(5,1)=6
- PF(14,1)=2 : PF(13,1)=3 : PF(12,1)=4 : PF(11,1)=5 : PF(10,1)=6
- V=3
- Return
- 18 For T=1 To 2 : PF(1,T)=2 : PF(2,T)=3 : PF(3,T)=4 : PF(4,T)=5 : PF(5,T)=6
- PF(14,T)=2 : PF(13,T)=3 : PF(12,T)=4 : PF(11,T)=5 : PF(10,T)=6
- Next
- V=3
- Return
- 19 PF(1,1)=2 : PF(2,2)=3 : PF(3,1)=4 : PF(4,2)=5 : PF(5,1)=6
- PF(14,2)=2 : PF(13,1)=3 : PF(12,2)=4 : PF(11,1)=5 : PF(10,2)=6
- V=3
- Return
- 20 For T=1 To 3 : PF(1,T)=2 : PF(3,T)=3 : PF(5,T)=4
- PF(14,T)=2 : PF(12,T)=4 : PF(10,T)=6
- Next
- V=3
- Return
- 21
- 22
- 23
- 24
- V=21 : Return
- 25 V=21 : PF(7,15)=1 : Return
- 26 V=21 : Return
- LIVELLI:
- 101 Data 1,10,20,""
- 102 Data 2,6,12,"BABBO"
- 103 Data 3,12,15,"PIPPA"
- 104 Data 4,4,8,"BEPPA"
- 105 Data 5,8,20,"CACCA"
- 106 Data 6,12,15,"PUPPA"
- 107 Data 7,8,15,"CIPPA"
- 108 Data 8,8,16,"LIPPA"
- 109 Data 9,9,12,"POMPA"
- 110 Data 10,10,12,"ZUPPA"
- 111 Data 11,12,13,"BELIN"
- 112 Data 12,16,13,"MUFFA"
- 113 Data 13,16,12,"COLLO"
- 114 Data 14,12,14,"CALLO"
- 115 Data 15,18,14,"CULLO"
- 116 Data 16,18,15,"LOFFA"
- 117 Data 17,10,25,"CECIA"
- 118 Data 18,14,20,"RUTTO"
- 119 Data 19,14,22,"RINCO"
- 120 Data 20,14,20,"FOTTO"
- 121 Data 21,8,5,"CONNO"
- 122 Data 22,8,5,"SPINO"
- 123 Data 23,5,40,"ZOMPA"
- 124 Data 24,4,80,"LAPIN"
- 125 Data 25,1,3,"ATARU"
- 126 Data 26,100,99,"MADO'"
- 127 Data 27,0,0,"."
- FINE:
- Music 1
- Load Iff "CazTri:propriofinepic"
- KW
- Return
- Procedure FOTTO[X,Y]
- XX=X*8+1 : YY=Y*8+1
- Ink CO(CL)
- If FT=1 Then Ink 16
- Bar XX,YY To XX+6,YY+6
- FT=0
- End Proc
- Procedure CINPUT[NN$,N]
- N$=""
- Repeat
- A$=Inkey$
- If(A$=Chr$(8)) and(Len(N$)>0) Then Print Chr$(8);" ";Chr$(8); : N$=Left$(N$,Len(N$)-1)
- If(Instr(NN$,A$)>0) and(Len(N$)<N) Then Print Upper$(A$); : N$=N$+Upper$(A$)
- Until(A$=Chr$(13))
- End Proc
- Procedure KW
- Repeat
- A=Joy(1)
- B$=Inkey$
- Until(A=16) or(B$<>"")
- End Proc